import goods from "../modules/data.js";
import $ from "../modules/select.js";
import { cartRender } from "../modules/render.js";
import computedSum from "../modules/computedSum.js";
import changeData from "../modules/changeData.js";
import changeAllCheck from "../modules/changeAllCheck.js";

// 获取初始本地存储中的购物车数据
const cartData = JSON.parse(localStorage.getItem("cartData")) || [];

const tbody = $("tbody");
const allCheck = $("#allCheck");

// 渲染页面
cartRender(tbody, goods, cartData);
// 计算总数量和总价
computedSum(cartData);
// 判断是否需要全选
allCheck.checked = cartData.every(val=>val.checked);
// 事件委托绑定单个复选框的选中状态切换事件
tbody.addEventListener("change", function(eve){
  // 找到真正的单个复选框
  if(eve.target.className === "check"){
    // 获取选中状态
    const checked = eve.target.checked;
    // 获取当前商品id
    const id = eve.target.parentNode.parentNode.dataset.id;
    // 修改本地存储中的数据
    changeData(cartData, id, (i)=>{
      cartData[i].checked = checked;
    })
    // 判断全选
    allCheck.checked = cartData.every(val=>val.checked);
    // 计算总数量和总价
    computedSum(cartData);
  }
})

// 全选框影响单个复选框
allCheck.onchange = function(){
  // 改变所有单个复选框
  changeAllCheck(cartData, this.checked);
  // 计算总数量和总价
  computedSum(cartData);
}

// 事件委托绑定单个数字框的内容改变事件
tbody.addEventListener("change", function(eve){
  if(eve.target.className === "setNum"){
    // 获取当前数字框数值
    const n = eve.target.value - 0;
    // 获取当前商品id
    const id = eve.target.parentNode.parentNode.dataset.id;
    // 准备保存当前商品的价格
    let p = 0;
    changeData(cartData, id, (i)=>{
      cartData[i].num = n;
      p = cartData[i].price;
    })
    // 计算总数量和总价
    computedSum(cartData);
    // 获取小计容器
    const count = eve.target.parentNode.parentNode.querySelector(".count");
    // 计算小计：数量*单价
    count.innerHTML = n * p;
  }
})

// 事件委托绑定删除事件
tbody.addEventListener("click", function(eve){
  if(eve.target.className === "del"){
    // 获取id
    const id = eve.target.parentNode.dataset.id;
    // 修改数据（删除数据）
    changeData(cartData, id, (i)=>{
      cartData.splice(i, 1);
    })
    // 删除DOM元素
    eve.target.parentNode.remove();
    // 判断全选
    allCheck.checked = cartData.every(val=>val.checked);
    // 计算总数量和总价
    computedSum(cartData);
  }
})

// 删除全部点击事件
$("#delAll").onclick = function(){
  // 清空表格
  tbody.innerHTML = "";
  // 清空购物车数据
  cartData.splice(0);
  localStorage.setItem("cartData", JSON.stringify(cartData));
  // 重置总数量和总价
  $("#sum").innerHTML = 0;
  $("#sumPrice").innerHTML = 0;
}
